RAG Query 改写
RAG 流程的第一步通常是对用户 Query 进行改写。用户提问方式与期望答案之间存在差距,改写有助于系统更准确地理解意图,提升召回精度。
信息不完整类改写
历史会话改写
多轮对话中前后文关联,仅凭当前 Query 会导致召回精度下降。需将上下文信息补全。
用户:「华为 meta70 手机的性能怎么样?」 系统:「……性能表现非常优秀」 用户:「摄像头方面具体改进了什么?」
改写前:
摄像头方面具体改进了什么?改写后:华为 meta70 手机的摄像头相比 meta60 有哪些具体改进?
关键词扩写
用户输入简短、缺乏上下文时,扩展为完整问句。
输入:
机器学习实践改写后:机器学习在实际应用中的案例有哪些?哪些工具和方法适用于机器学习实践?
伪答案改写
在原始查询中加入假设性答案,增强语义丰富性,提升复杂问题检索能力。
输入:
如何提高企业的市场竞争力?改写后:如何提高企业的市场竞争力?比如通过创新产品、优化营销策略或提升客户服务等手段。
缩写词改写
将缩写扩展为完整术语,匹配文档中的正式表达。
输入:
VR技术在教育中的应用改写后:虚拟现实(Virtual Reality)技术在教育中的应用有哪些?可以举一些实际的应用案例吗?
噪声问题类改写
一般去噪
去除无关修饰语、模糊表达、不相关背景,简化查询。
输入:
我最近在准备面试,但对于算法的理解还不太够,能推荐一些有效的学习资源吗?改写后:有哪些有效的学习资源可以帮助提高算法理解?
关键词改写
提取核心关键词,去除停用词和多余描述,适配关键词检索(如 BM25)。
输入:
关于Java中的线程池,常见的实现方式有哪些?改写后:Java线程池常见实现方式
子查询拆分
对比类查询可能产生信息干扰,拆分为多个独立查询,分别检索各实体特点。
输入:
C++ 和 Go 哪个更适合做系统编程?拆分后:
C++ 适合做系统编程的优点有哪些?Go 适合做系统编程的优点有哪些?
实践建议
- 改写质量依赖 Prompt 设计和大模型能力
- 可进行多次改写或拆分为多个独立查询提高召回
- 结合 Reranking 重排序模型对召回结果精确排序
- 示例 Prompt:
您是查询扩展方面的专家。请通过同义词/短语、完整写出缩写、添加额外描述、改变表达方式、翻译等方式扩展用户问题,返回 5 个版本。 (内容由AI生成,仅供参考)